#ifndef LIST_H
#define LIST_H

#include <stddef.h>

typedef struct _node
{
    void *value;
    struct _node *next;
} node_t;

typedef struct {
    node_t *head;
    size_t size;
} list_t;

void list_init(list_t *list);

void list_add(list_t *list, void *obj);

void *list_remove(list_t *list);

void *list_peek(list_t *list);

void *list_get(list_t *list, unsigned int idx);

void list_free(list_t *list);

#endif
